﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Hotnet.Dal.NSDalPicture;
using Hotnet.Entity;
using Ninject.Core;
using Hotnet.Biz.NSBizCommon;
using Hotnet.Entity.Enum;

namespace Hotnet.Biz.NSBizPicture
{
	public class BizPictureGroupXTag : BaseBiz<PictureGroupXTag>
	{
		private static DalPictureGroupXTag db = new DalPictureGroupXTag();
		private BizTag bizTag;
		private BizTag BizTag
		{
			get
			{
				if (bizTag == null)
					bizTag = new BizTag();
				return bizTag;
			}
		}

		public BizPictureGroupXTag()
			: base(db)
		{
		}

		public void DeleteAllByGroupID(int groupId)
		{
			db.DeleteBy(tag => tag.GroupID == groupId);
		}

		public void DeleteAllByTagID(int tagId)
		{
			db.DeleteBy(tag => tag.TagID == tagId);
		}

		public void SaveTags(string tagStr, int groupId)
		{
			var tagIDs = BizTag.Save(tagStr, EnumTagType.图片);

			foreach (var tagId in tagIDs)
			{
				var pictureGroupXTag = new PictureGroupXTag();
				pictureGroupXTag.GroupID = groupId;
				pictureGroupXTag.TagID = tagId;
				this.Insert(pictureGroupXTag);
			}
		}

		//public PictureGroupXTag[] ListTagsByGroupID(int groupId)
		//{
		//    PictureGroupXTag[] tags = dalPictureGroupXTag.ListBy(tag => tag.GroupID == groupId);
		//    foreach (var item in tags)
		//    {
		//        item.Tag = BizTag.Get(item.TagID);
		//    }
		//    return tags;
		//}

		public List<string> ListTagNamesByGroupID(int groupId)
		{
			return ListTagByGroupID(groupId).Select(x=>x.TagName).ToList();
		}

		public Tag[] ListTagByGroupID(int groupID)
		{
			return db.ListTagByGroupID(groupID);
		}

		public string GetTagStringsByGroupID(int groupId)
		{
			PictureGroupXTag[] tags = db.ListBy(tag => tag.GroupID == groupId);
			StringBuilder tagIds = new StringBuilder();
			foreach (var tag in tags)
			{
				tagIds.Append(BizTag.Get(tag.TagID).TagName).Append(" ");
			}
			return tagIds.ToString().Trim();
		}
	}
}
